using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics.Contracts;


namespace FoundationLib.Ifc.Domain 
{
	/// <summary>
	/// Interface providing access to pending changes
	/// </summary>
	public interface IPendingChanges : IEnumerable<IVersionedEvent>   
	{
		/// <summary>
		/// Adds a new domain event to the list of pending changes
		/// </summary>
		/// <param name="domainEvent">The domain event</param>
		void Add(IVersionedEvent domainEvent);

		/// <summary>
		/// Clears the list of pending changes
		/// </summary>
		void Clear();
	}

}